package com.xyj.week03;

import java.util.*;

/**
 * 删除数组中的重复元素
 */

public class T1 {

    public Integer cap;

    public LinkedHashMap<Integer,Integer> cache;

    public T1 (Integer capacity){
        this.cap=capacity;
        this.cache=new LinkedHashMap<>();
    }
    public Integer getOne(Integer key){
        Integer value = cache.get(key);
        if (value==null){
            return null;
        }
        //如果存在这个key的话，就将这个key先删除，然后冲重新插入（放在链表队尾，表示最近访问过）
        cache.remove(key);
        cache.put(key,value);
        return value;
    }

    public void putOne(Integer key,Integer value){

        //判断这个元素是否已经存在过
        if (cache.get(key)!=null){
            cache.remove(key);
            cache.put(key, value);
            return;
        }
        //这个元素没有存在过
        if (cache.size()>=cap){
            //如果内存满了,删除最不经常使用的元素先
            Integer firstKey = cache.keySet().iterator().next();
            cache.remove(firstKey);
        }
            cache.put(key, value);
            cap++;
    }



    public static void main(String[] args) {
        Integer []nums=new Integer[]{1,2,3,2,2,1,1,4,4,5,6};
        System.out.println(Arrays.toString(nums));
        System.out.println(Arrays.toString(removeRepeat(nums)));
    }


    public static Object[] removeRepeat(Integer[] nums){
        Set<Integer> set=new HashSet<>();
        Set<Integer> help=new HashSet<>(Arrays.asList(nums));
        for (Integer num : nums) {
            if (!set.add(num)){
                help.remove(num);
            }
        }
        return help.toArray();
    }


}
